package eventos.abrir;

import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

import logica.Jerarquia;

import controlador.IControladorJerarquia;
import eventos.EventoCancelarEdición;
import eventos.aceptar.EventoAceptarJerarquiaEditada;

import vista.objetos.JerarquiaGraficable;
import vista.paneles.ElementoNoExistenteException;
import vista.ventanas.VentanaJerarquia;

public class EventoEditarVentanaJerarquia extends EventoAbrirVentanaJerarquia
{
	private JerarquiaGraficable jerarquiaAEditar;
	
	public EventoEditarVentanaJerarquia(JFrame ventanaPadre, IControladorJerarquia controlador, JerarquiaGraficable jerarquiaAEditar) 
	{
		super(ventanaPadre, controlador);
		
		this.jerarquiaAEditar = jerarquiaAEditar;
	}
	
	public void mouseReleased(MouseEvent e)
	{
		VentanaJerarquia ventana;
		
		try 
		{
			ventana = new VentanaJerarquia(this.getVentanaPadre(), this.getControlador().getEntidadesExitentes(), (Jerarquia)jerarquiaAEditar.getObjetoDiagramaDecorado());
			
			/*
			 * guardo el estado que tenía la jerarquia antes de ser editada por si el usuario
			 * decide cancelar la edición.
			 */
			super.getControlador().setGraficableEditando(this.jerarquiaAEditar.getMementoGenerico());	

			
			EventoAceptarJerarquiaEditada eventoAceptar = new EventoAceptarJerarquiaEditada(ventana, this.getControlador(), jerarquiaAEditar);
			ventana.escucharEventosBotonAceptar(eventoAceptar);
			
			EventoCancelarEdición eventoCancelar = new EventoCancelarEdición();
			ventana.escucharEventosBotonCancelar(eventoCancelar);
			
			this.agregarEventos(ventana);
			
			ventana.setVisible(true);
		}
		catch (ElementoNoExistenteException e1) 
		{
			JOptionPane.showMessageDialog(this.getVentanaPadre(), e1.getMessage(), "Entidad Padre No Existente", JOptionPane.ERROR_MESSAGE);
		}
	}

}
